package org.miframework.arqsw.VistaMap;

import java.io.File;
import java.lang.reflect.Field;
import java.util.ArrayList;

import org.miframework.arqsw.controller.Controlador;

public class AnnotationViewParser {
	
	String controlador;
	String vista;
	
	public AnnotationViewParser(String controlador,String vista){
		this.controlador=controlador;
		this.vista=vista;		
	}

	public String mapear() throws ClassNotFoundException, InstantiationException, IllegalAccessException{
		String valorRetorno="";
		File carpeta = new File("C:"+(char)92+"Users"+(char)92+"PabloGuillermo"+(char)92+"workspace"+(char)92+"miframework"+(char)92+"src"+(char)92+"com"+(char)92+"prueba"+(char)92+"myapp");
		ArrayList<String> archivos = new ArrayList<>();
		int i=0;
		for (final File fileEntry : carpeta.listFiles()) {
	        String temp="";
			System.out.println(fileEntry.getName());
			String n = fileEntry.getName();
			for(int j=0; j<n.length()-5; j++){
				temp+=n.charAt(j);
			}
			archivos.add("com.prueba.myapp."+temp);
	        
	    }
		for(String s:archivos){
			System.out.println(s);
			Class clase = Class.forName(s);
			Field [] atributos=clase.getFields();
			System.out.println("Atributos:" +atributos.length);
			for(Field a: atributos){
				System.out.println("Nombre:" + a.getName());
				if(a.isAnnotationPresent(org.miframework.arqsw.annotations.Vista.class)){
					Controlador c = (Controlador)clase.newInstance();
					org.miframework.arqsw.annotations.Vista anotacion = (org.miframework.arqsw.annotations.Vista)a.getAnnotation(org.miframework.arqsw.annotations.Vista.class);
					System.out.println("Retorno: " + anotacion.retorno());
					System.out.println("URL :" + anotacion.url());
					System.out.println("Nombre:" + a.getName());
					if(this.controlador.equals(anotacion.url())){
						if(a.getName().equals(vista)){
							valorRetorno=anotacion.retorno();
							break;
						}	
					}
					//controladores.put(anotacion.url(),c);
				}
			}
		}
		
		return valorRetorno;		
	}
	
}
